package types

// Config 主配置结构
type Config struct {
	Exports []ExportConfig `json:"exports"`
}

// ExportConfig 导出配置
type ExportConfig struct {
	ExcelPath       string  `json:"excel_path"`
	OutputDir       string  `json:"output_dir,omitempty"`
	ServerOutputDir string  `json:"server_output_dir,omitempty"`
	ClientOutputDir string  `json:"client_output_dir,omitempty"`
	Sheets          []Sheet `json:"sheets"`
}

// Sheet 子表配置
type Sheet struct {
	SheetName          string `json:"sheet_name"`
	ServerFileName     string `json:"server_file_name"`
	ClientFileName     string `json:"client_file_name"`
	Processor          string `json:"processor,omitempty"`        // 统一处理器（向后兼容）
	ServerProcessor    string `json:"server_processor,omitempty"` // 服务端处理器
	ClientProcessor    string `json:"client_processor,omitempty"` // 客户端处理器
	KeyField           string `json:"key_field,omitempty"`
	IsConstantTable    bool   `json:"is_constant_table,omitempty"`    // 是否为常量表
	ConstantKeyField   string `json:"constant_key_field,omitempty"`   // 常量表键字段
	ConstantValueField string `json:"constant_value_field,omitempty"` // 常量表值字段
}

// FieldInfo 字段信息
type FieldInfo struct {
	Index    int
	Name     string
	Type     string
	ExportTo string
}

// DataRow 数据行
type DataRow map[string]interface{}

// JSONData JSON数据结构
type JSONData struct {
	Data  map[string]DataRow     `json:"data"`
	Extra map[string]interface{} `json:"extra,omitempty"`
}

// LuaData Lua数据结构
type LuaData struct {
	Data  map[string]DataRow     `json:"-"`
	Extra map[string]interface{} `json:"-"`
}

// ExportResult 导出结果
type ExportResult struct {
	ServerJSON string
	ServerLua  string
	ClientJSON string
	ClientLua  string
}

// ConstantData 常量表数据结构
type ConstantData struct {
	Data   map[string]interface{} `json:"data"`
	Extra  map[string]interface{} `json:"extra,omitempty"`
}

// ProcessorFunc 自定义数据处理函数类型
type ProcessorFunc func(data []DataRow, exportType string, sheetConfig *Sheet) ([]DataRow, map[string]interface{})
